#ifndef __MathQuaternion__h__
#define __MathQuaternion__h__

#include "Vectors.h"
#include <string>
// �� ���� theta �����

namespace neiderra{
	namespace math{

		class quat
		{
		public:
			float x, y, z, w;

		public:
			quat();
			quat(float x, float y, float z, float w);
			quat(const vec3&);

			quat operator*(const quat&);
			quat& operator*=(const quat&);
			quat& operator=(const quat&);
			quat& operator=(const vec3&);
			quat& operator*(const vec3&);

			void normalize();
			void identity();
			quat conjugate();

			float getRotationAngle();
			vec3 getRotationAxis();

			void setRotateAboutX(float theta);
            void setRotateAboutY(float theta);
			void setRotateAboutZ(float theta);
			void setRotateAboutAxis(vec3 axis, float theta);

			vec3 toVec3();
		};

        void convertQuatToMatrix(quat&, float*);
		void convertStringToQuat(quat&, const std::string&);
	}
}

#endif
